package com.ittao.taoaicodemother.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 应用存储配置类
 * 用于读取application.yml中的app.storage配置
 */
@Data
@Component
@ConfigurationProperties(prefix = "app.storage")
public class AppStorageConfig {
    
    /**
     * 存储类型：local（本地存储）或 cos（腾讯云COS）
     */
    private String type;
    
    /**
     * 部署URL前缀，用于nginx映射访问
     */
    private String deployUrl;
    
    /**
     * COS模式专用配置
     */
    private Cos cos = new Cos();
    
    /**
     * COS配置内部类
     */
    @Data
    public static class Cos {
        /**
         * 临时目录最大大小
         */
        private long tempDirMaxSize;
        
        /**
         * 清理延迟时间（秒）
         */
        private int cleanupDelaySeconds;
        
        /**
         * 最大并发构建数
         */
        private int maxConcurrentBuilds;
        
        /**
         * npm命令超时时间（秒）
         */
        private int npmTimeoutSeconds;
        
        /**
         * 临时目录路径
         */
        private String tempDirPath;
        
        /**
         * 内存阈值
         */
        private long memoryThreshold;
        
        /**
         * GC触发阈值
         */
        private double gcThreshold;
        
        /**
         * 紧急清理缓冲比例
         * 当临时目录超过阈值时，额外清理的空间比例
         */
        private double emergencyCleanupBufferRatio;
        
        /**
         * 是否启用紧急清理策略，默认启用
         */
        private boolean enableEmergencyCleanup;
    }
}